SprignWebflux
Spring WebFlux是随Spring 5推出的响应式Web框架。
SpringMvc与SpringWebFlux
1. SpringMvc (同步阻塞)
基于ServletApi
2.SpringWebFlux (异步非阻塞)
- Spring WebFlux是基于响应式流的,核心是基于 Reactor 的API 实现的。
- 需要支持异步的运行环境,比如Netty和Undertow;也可以运行在支持异步I/O的Servlet 3.1的容器之上
建立在非阻塞的异步I/O和事件驱动的基础之上的。
SpringWebflux 执行过程
SpringWebflux 执行过程和 SpringMVC 相似的
1.SpringWebflux 核心控制器 DispatchHandler,实现接口 WebHandler,WebHandler 有一个方法handle
SpringWebflux 里面 DispatcherHandler,负责请求的处理
HandlerMapping:请求查询到处理的方法
HandlerAdapter:真正负责请求处理
HandlerResultHandler:响应结果处理
异步与同步,阻塞与非阻塞的理解
这里做一个简单的通俗的解释:
1.异步和同步针对调用者,调用者发送请求,如果等着对方回应之后才去做其他事情就是同步,如果发送请求之后不等着对方回应就去做其他事情就是异步
2.阻塞和非阻塞针对被调用者,被调用者接受到请求之后,做完请求任务之后才给出反馈就是阻塞,接受到请求之后马上给出反馈然后再去做事情就是非阻塞
PS:所谓异步非阻塞是针对服务端而言的,是说服务端可以充分利用CPU资源去做更多事情,这与客户端无关,客户端该怎么请求还是怎么请求。)